package com.fary.core.convert.converter;

/**
 * 对转换器进行注册，对于ConversionService和ConverterRegistry的主要实现类是GenericConversionService。
 */
public interface ConverterRegistry {

    /**
     * 注册一个转换器
     */
    void addConverter(Converter<?, ?> converter);

    <S, T> void addConverter(Class<S> sourceType, Class<T> targetType, Converter<? super S, ? extends T> converter);

    void addConverter(GenericConverter converter);

    /**
     * 增加转换器的工厂类
     */
    void addConverterFactory(ConverterFactory<?, ?> factory);

    /**
     * 移除转换器
     */
    void removeConvertible(Class<?> sourceType, Class<?> targetType);

}